package com.example.services;

import com.example.dtos.plugin.*;
import com.example.common.dto.PageRequestDTO;
import com.example.common.dto.PaginationDTO;
import org.springframework.web.multipart.MultipartFile;

/**
 * 插件服务接口
 */
public interface PluginService {
    
    /**
     * 获取插件列表
     *
     * @param pageRequest 分页请求
     * @param status 插件状态筛选
     * @param keyword 搜索关键词
     * @return 插件分页数据
     */
    PaginationDTO<PluginListItemDTO> getPluginList(PageRequestDTO pageRequest, String status, String keyword);
    
    /**
     * 获取插件详情
     *
     * @param pluginId 插件ID
     * @return 插件详情
     */
    PluginDetailDTO getPluginDetail(String pluginId);
    
    /**
     * 上传插件
     *
     * @param file 插件文件
     * @param autoActivate 是否自动启用
     * @return 上传结果
     */
    PluginUploadResponseDTO uploadPlugin(MultipartFile file, boolean autoActivate);
    
    /**
     * 更新插件状态
     *
     * @param pluginId 插件ID
     * @param statusDTO 状态更新参数
     * @return 更新结果
     */
    PluginStatusResponseDTO updatePluginStatus(String pluginId, PluginStatusDTO statusDTO);
    
    /**
     * 删除插件
     *
     * @param pluginId 插件ID
     * @param force 是否强制删除
     */
    void deletePlugin(String pluginId, boolean force);
} 